import epsilon from "./epsilon.js";
import relativeError from "./relative_error.js";

/**
 * 近似相等。
 *
 * 该函数用于判断两个数值在给定的相对误差范围内是否近似相等。
 * 在统计学和数值分析中，由于浮点数计算的精度限制，直接比较两个数值是否相等可能不适用，
 * 因此通过设定一个容差范围来评估它们的近似相等性。
 *
 * @param {number} actual 实际值（待测试的数值）。
 * @param {number} expected 预期值（参考数值）。
 * @param {number} tolerance 容差（可接受的相对差异，默认为 epsilon）。
 * @return {boolean} 如果实际值与预期值之间的相对误差小于或等于容差，则返回 true；否则返回 false。
 */
function approxEqual(actual, expected, tolerance = epsilon) {
    return relativeError(actual, expected) <= tolerance;
}

export default approxEqual;
